<?php
/**
 * PHP中的多态:
 * 定义一个抽象类：Person，有两个子类：Worker 和 Student
 */

/**
 * 定义一个抽象父类
 */
abstract class Person {
    public abstract function action();
}

/**
 * 两个子类,继承父类
 */
class Worker extends Person {
    public function action() {
        echo '工人去上班' . PHP_EOL;
    }
}

class Student extends Person {
    public function action() {
        echo '学生去上学' . PHP_EOL;
    }
}

/**
 * 其它的类, 不继承自Person
 */
class Ufo {
    public function action() {
        echo '外星人的行为...' . PHP_EOL;
    }
}

/**
 * 调用
 */
function main($person) {
    $person->action();
}

main(new Worker()); //工人去上班
main(new Student()); //学生去上学
main(new Ufo()); //外星人的行为...
